package com.group.www.interfaces;

import com.github.pagehelper.PageInfo;
import com.group.www.pojo.OrderInfo;

import java.awt.print.Pageable;
import java.util.List;

public interface OrderInfoServiceI extends BasicOper<OrderInfo> {

    /**
     * 6添加订单信息地方法，参数为订单类型的实体类，返回boolean值，判断是否添加成功
     * @param entity 订单类型的实体类参数，未添加订单信息的条件
     * @return 返回boolean类型参数，判断是否添加成功
     */
    boolean add(OrderInfo entity);


    /**
     * 修改订单信息的方法，根据参数为订单类型的实体类中的id为条件，修改其他信息，返回boolean类型值
     * @param entity 参数为订单类型的实体类，提供了条件与要修改的变量
     * @return 返回值为boolean类型，判断是否修改订单信息成功
     */
    boolean update(OrderInfo entity);


    /**
     * 删除单个订单信息的方法，参数为订单类型的实体类，根据实体类中有的参数进行删除，返回值为boolean类型值，判断是否删除订单信息成功
     * @param entity 为订单类型实体类的参数，根据参数里面的变量进行删除
     * @return 返回值为boolean类型值，可判断是否删除成功
     */
    boolean delete(OrderInfo entity);


    /**
     * 删除多个订单信息的方法，参数为订单id的字符串，返回值为boolean类型值，判断是否删除成功
     * @param ids 为用“，”分割的订单id的字符串
     * @return 返回值为boolean类型值，判断是否删除多个订单信息成功
     */
    boolean deleteMany(String ids);


    /**
     * 分页模糊查询品牌商的订单信息，参数为下，返回一个包含查询数据的分页模型对象
     * @param brandid 品牌商的id，根据此id分品牌商信息
     * @param pageIndex 分页模型的当前页信息
     * @param pageSize 分页模型的每页记录数信息
     * @param username 根据客户名称进行模糊查询，当此值为空时，查询所有的该品牌商的订单信息
     * @param orderstatus 根据订单状态进行模糊查询，当此值为空时，查询所有的该品牌商的订单信息
     * @return 返回一个分页模型对象
     */
    PageInfo<OrderInfo> queryAll(Integer brandid, Integer pageIndex, Integer pageSize, Object username, Object orderstatus);


    /**
     *  修改订单状态信息的方法，根据订单id来进行修改，参数orderid为订单编号，是修改条件，ostatus为订单状态，是要修改的变量
     *  返回boolean类型值，判断是否修改成功
     *
     *  当订单状态修改为“代发货”时，要进行金额的修改。1：要修改客户余额；2：要修改品牌商的金额
     *
     *  当订单信息修改为“待评价”时，要添加两条信息，1：出库记录信息，要写出详细的原因；2：插入一条销售记录信息
     *
     * @param orderid 表示订单编号的变量，未修改条件
     * @param ostatusid 表示订单的状态，为要修改的条件
     * @return 返回值为boolean类型值，判断是否修改成功
     */
    boolean amendOrderInfoStatusById(int orderid, int ostatusid);

}
